@@ -226,14 +226,15 @@ public class DBService { |
||
226 | 226 |
+ DBHelper.PHOTO_INFO_COLUMNS.CAPTURE_TIME + " desc limit 1 ", null); |
227 | 227 |
if (c.moveToNext()) { |
228 | 228 |
photoBean = cursor2PhotoBean(c); |
229 |
- }else { |
|
230 |
- c = db.rawQuery("select * from " + DBHelper.PHOTO_INFO_TABLE + " where " |
|
231 |
- + DBHelper.PHOTO_INFO_COLUMNS.UPLOADED_STATUS + " = '" + -1 + "'"+" order by " |
|
232 |
- + DBHelper.PHOTO_INFO_COLUMNS.CAPTURE_TIME + " desc limit 1 ", null); |
|
233 |
- if (c.moveToNext()) { |
|
234 |
- photoBean = cursor2PhotoBean(c); |
|
235 |
- } |
|
236 | 229 |
} |
230 |
+// else { |
|
231 |
+// c = db.rawQuery("select * from " + DBHelper.PHOTO_INFO_TABLE + " where " |
|
232 |
+// + DBHelper.PHOTO_INFO_COLUMNS.UPLOADED_STATUS + " = '" + -1 + "'"+" order by " |
|
233 |
+// + DBHelper.PHOTO_INFO_COLUMNS.CAPTURE_TIME + " desc limit 1 ", null); |
|
234 |
+// if (c.moveToNext()) { |
|
235 |
+// photoBean = cursor2PhotoBean(c); |
|
236 |
+// } |
|
237 |
+// } |
|
237 | 238 |
db.setTransactionSuccessful(); |
238 | 239 |
} catch (Exception e) { |
239 | 240 |
LogHelper.d(TAG, "dbservice getNextUploadPhotoBean error happen " + e); |
@@ -25,33 +25,35 @@ public class UploadTask extends AsyncTask<Void, Integer, Boolean> { |
||
25 | 25 |
|
26 | 26 |
@Override |
27 | 27 |
protected Boolean doInBackground(Void... params) { |
28 |
- try { |
|
29 |
- String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator + bean.sessionId |
|
30 |
- + File.separator + ai.pai.lensman.utils.Constants.THUMBNAIL_DIR_NAME; |
|
31 |
- File dir = new File(dirPath); |
|
32 |
- dir.mkdirs(); |
|
33 |
- File photo = new File(dir, bean.photoName); |
|
34 |
- LogHelper.d(TAG, "上传照片 " + bean); |
|
35 |
- if (photo.exists() && photo.isFile()) { |
|
36 |
- PhotoUploadUtils photoUploadUtils = new PhotoUploadUtils(UrlContainer.PHOTO_UPLOAD_URL + "?timestamp=" + System.currentTimeMillis()); |
|
37 |
- photoUploadUtils.addFileParameter("photo", photo); |
|
38 |
- photoUploadUtils.addTextParameter("user_id", bean.lensmanId); |
|
39 |
- photoUploadUtils.addTextParameter("session_id", bean.sessionId); |
|
40 |
- photoUploadUtils.addTextParameter("photo_id", String.valueOf(bean.photoId)); |
|
41 |
- photoUploadUtils.addTextParameter("nickname",Preferences.getInstance().getUserName()); |
|
28 |
+ for(int k = 0 ; k< 5;k++){ |
|
29 |
+ try { |
|
30 |
+ String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator + bean.sessionId |
|
31 |
+ + File.separator + ai.pai.lensman.utils.Constants.THUMBNAIL_DIR_NAME; |
|
32 |
+ File dir = new File(dirPath); |
|
33 |
+ dir.mkdirs(); |
|
34 |
+ File photo = new File(dir, bean.photoName); |
|
35 |
+ LogHelper.d(TAG, "上传照片 第"+k+"次尝试"+ bean); |
|
36 |
+ if (photo.exists() && photo.isFile()) { |
|
37 |
+ PhotoUploadUtils photoUploadUtils = new PhotoUploadUtils(UrlContainer.PHOTO_UPLOAD_URL + "?timestamp=" + System.currentTimeMillis()); |
|
38 |
+ photoUploadUtils.addFileParameter("photo", photo); |
|
39 |
+ photoUploadUtils.addTextParameter("user_id", bean.lensmanId); |
|
40 |
+ photoUploadUtils.addTextParameter("session_id", bean.sessionId); |
|
41 |
+ photoUploadUtils.addTextParameter("photo_id", String.valueOf(bean.photoId)); |
|
42 |
+ photoUploadUtils.addTextParameter("nickname",Preferences.getInstance().getUserName()); |
|
42 | 43 |
|
43 |
- String result = new String(photoUploadUtils.send(), "UTF-8"); |
|
44 |
- JSONObject resultObj = new JSONObject(result); |
|
45 |
- if (resultObj.getInt("status") == 200) { |
|
46 |
- LogHelper.d(TAG, "上传 UploadTask upload result ok "); |
|
47 |
- return true; |
|
44 |
+ String result = new String(photoUploadUtils.send(), "UTF-8"); |
|
45 |
+ JSONObject resultObj = new JSONObject(result); |
|
46 |
+ if (resultObj.getInt("status") == 200) { |
|
47 |
+ LogHelper.d(TAG, "上传 UploadTask upload result ok "); |
|
48 |
+ return true; |
|
49 |
+ } |
|
50 |
+ } else { |
|
51 |
+ return false; |
|
48 | 52 |
} |
49 |
- } else { |
|
50 |
- return false; |
|
51 |
- } |
|
52 | 53 |
|
53 |
- } catch (Exception e) { |
|
54 |
- LogHelper.d(TAG, "上传发生异常 UploadTask :" + bean + " error:" + e); |
|
54 |
+ } catch (Exception e) { |
|
55 |
+ LogHelper.d(TAG, "上传发生异常 UploadTask :" + bean + " error:" + e); |
|
56 |
+ } |
|
55 | 57 |
} |
56 | 58 |
return false; |
57 | 59 |
} |
@@ -98,14 +98,18 @@ public class SessionRecyclerAdapter extends RecyclerView.Adapter<SessionRecycler |
||
98 | 98 |
error++; |
99 | 99 |
} |
100 | 100 |
} |
101 |
+ holder.uploadProgressBar.setProgressDrawable(context.getResources().getDrawable(R.drawable.progress_upload_bg)); |
|
101 | 102 |
if(error>0){ |
102 | 103 |
holder.uploadStatus.setText(R.string.upload_error); |
104 |
+ holder.uploadProgressBar.setProgressDrawable(context.getResources().getDrawable(R.drawable.progress_upload_fail_bg)); |
|
103 | 105 |
}else if(uploaded<photoList.size()){ |
104 | 106 |
holder.uploadStatus.setText(R.string.upload_processing); |
105 | 107 |
}else{ |
106 | 108 |
holder.uploadStatus.setText(R.string.upload_success); |
107 | 109 |
} |
108 |
- holder.uploadProgressBar.setProgress(100*uploaded/photoList.size()); |
|
110 |
+ holder.uploadProgressBar.setMax(photoList.size()); |
|
111 |
+ holder.uploadProgressBar.setProgress(uploaded); |
|
112 |
+ |
|
109 | 113 |
} |
110 | 114 |
holder.itemView.setOnClickListener(new View.OnClickListener(){ |
111 | 115 |
@Override |
@@ -111,10 +111,10 @@ public class UploadPresenter implements UploadContract.Presenter,BaseInteractor. |
||
111 | 111 |
@Override |
112 | 112 |
public synchronized void onPhotoUploaded(PhotoBean bean) { |
113 | 113 |
int position = sessionList.size()-bean.sessionSeq; |
114 |
- LogHelper.d("czy","onPhotoUploaded and notify UI change at "+position); |
|
115 | 114 |
if(position < 0 || position>=sessionList.size()){ |
116 | 115 |
return; |
117 | 116 |
} |
117 |
+ LogHelper.d("czy","onPhotoUploaded and notify UI change at "+position); |
|
118 | 118 |
SessionBean sessionBean = sessionList.get(position); |
119 | 119 |
ArrayList<PhotoBean> photoList = sessionBean.sessionPhotos; |
120 | 120 |
if(photoList==null || photoList.size()==0){ |
@@ -136,10 +136,10 @@ public class UploadPresenter implements UploadContract.Presenter,BaseInteractor. |
||
136 | 136 |
@Override |
137 | 137 |
public synchronized void onPhotoUploadError(PhotoBean bean) { |
138 | 138 |
int position = sessionList.size()-bean.sessionSeq; |
139 |
- LogHelper.d("czy","onPhotoUploadError and notify UI change at "+position); |
|
140 | 139 |
if(position < 0 || position>=sessionList.size()){ |
141 | 140 |
return; |
142 | 141 |
} |
142 |
+ LogHelper.d("czy","onPhotoUploadError and notify UI change at "+position); |
|
143 | 143 |
SessionBean sessionBean = sessionList.get(position); |
144 | 144 |
ArrayList<PhotoBean> photoList = sessionBean.sessionPhotos; |
145 | 145 |
if(photoList==null || photoList.size()==0){ |
@@ -0,0 +1,26 @@ |
||
1 |
+<?xml version="1.0" encoding="utf-8"?> |
|
2 |
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> |
|
3 |
+ <item android:id="@android:id/background"> |
|
4 |
+ <shape> |
|
5 |
+ <corners android:radius="1px" /> |
|
6 |
+ <solid android:color="@color/dark_grey" /> |
|
7 |
+ </shape> |
|
8 |
+ </item> |
|
9 |
+ <item android:id="@android:id/secondaryProgress"> |
|
10 |
+ <clip> |
|
11 |
+ <shape> |
|
12 |
+ <corners android:radius="1px" /> |
|
13 |
+ <solid android:color="@color/light_blue" /> |
|
14 |
+ </shape> |
|
15 |
+ </clip> |
|
16 |
+ </item> |
|
17 |
+ <item android:id="@android:id/progress"> |
|
18 |
+ <clip> |
|
19 |
+ <shape> |
|
20 |
+ <corners android:radius="1px" /> |
|
21 |
+ <solid android:color="@color/light_blue" /> |
|
22 |
+ </shape> |
|
23 |
+ </clip> |
|
24 |
+ </item> |
|
25 |
+ |
|
26 |
+</layer-list> |
@@ -0,0 +1,26 @@ |
||
1 |
+<?xml version="1.0" encoding="utf-8"?> |
|
2 |
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> |
|
3 |
+ <item android:id="@android:id/background"> |
|
4 |
+ <shape> |
|
5 |
+ <corners android:radius="1px" /> |
|
6 |
+ <solid android:color="@color/dark_grey" /> |
|
7 |
+ </shape> |
|
8 |
+ </item> |
|
9 |
+ <item android:id="@android:id/secondaryProgress"> |
|
10 |
+ <clip> |
|
11 |
+ <shape> |
|
12 |
+ <corners android:radius="1px" /> |
|
13 |
+ <solid android:color="@color/red" /> |
|
14 |
+ </shape> |
|
15 |
+ </clip> |
|
16 |
+ </item> |
|
17 |
+ <item android:id="@android:id/progress"> |
|
18 |
+ <clip> |
|
19 |
+ <shape> |
|
20 |
+ <corners android:radius="1px" /> |
|
21 |
+ <solid android:color="@color/red" /> |
|
22 |
+ </shape> |
|
23 |
+ </clip> |
|
24 |
+ </item> |
|
25 |
+ |
|
26 |
+</layer-list> |
@@ -47,6 +47,7 @@ |
||
47 | 47 |
android:id="@+id/recycler_view_sessions" |
48 | 48 |
android:layout_width="match_parent" |
49 | 49 |
android:layout_height="match_parent" |
50 |
+ android:layout_marginBottom="50dp" |
|
50 | 51 |
android:layout_below="@id/title_layout"/> |
51 | 52 |
|
52 | 53 |
|
@@ -39,9 +39,8 @@ |
||
39 | 39 |
android:id="@+id/pb_session_upload" |
40 | 40 |
android:layout_width="match_parent" |
41 | 41 |
android:layout_height="4dp" |
42 |
- android:progressDrawable="@drawable/progress_drawable" |
|
42 |
+ android:progressDrawable="@drawable/progress_upload_bg" |
|
43 | 43 |
style="?android:attr/progressBarStyleHorizontal" |
44 |
- android:background="@drawable/progress_bg" |
|
45 | 44 |
android:layout_marginLeft="10dp" |
46 | 45 |
android:layout_marginRight="10dp" |
47 | 46 |
android:layout_marginBottom="8dp" |
@@ -4,10 +4,12 @@ |
||
4 | 4 |
<color name="colorPrimaryDark">#2E78E5</color> |
5 | 5 |
<color name="colorAccent">#0BBE06</color> |
6 | 6 |
|
7 |
+ <color name="light_blue">#1E90FF</color> |
|
7 | 8 |
<color name="white">#ffffffff</color> |
8 | 9 |
<color name="transparent">#00000000</color> |
9 | 10 |
<color name="black">#000000</color> |
10 | 11 |
<color name="grey">#999999</color> |
12 |
+ <color name="red">#FF0000</color> |
|
11 | 13 |
<color name="text_white">#FFFFFF</color> |
12 | 14 |
<color name="background_white">#FFFFFF</color> |
13 | 15 |
<color name="background_light_grey_color">#F0F0F0</color> |